package models

import "time"

const (
	DeviceStatusOnline  = "online"
	DeviceStatusOffline = "offline"
)

type Device struct {
	ID         int       `gorm:"column:id;" json:"id"`
	Identifier string    `gorm:"column:identifier;" json:"identifier"`
	Iccid      string    `gorm:"column:iccid;" json:"iccid"`
	Name       string    `gorm:"column:name;" json:"name"`
	Type       string    `gorm:"column:type;" json:"type"`
	Status     string    `gorm:"column:status;" json:"status"`
	ExpireTime time.Time `gorm:"column:expireTime;" json:"expireTime"`

	TemperatureLimit float32 `gorm:"column:temperatureLimit;" json:"temperatureLimit"`
	TemperatureLower float32 `gorm:"column:temperatureLower;" json:"temperatureLower"`
	HumidityLimit    uint16  `gorm:"column:humidityLimit;" json:"humidityLimit"`
	HumidityLower    uint16  `gorm:"column:humidityLower;" json:"humidityLower"`

	Outage      bool `gorm:"column:outage;" json:"outage"`
	Call        bool `gorm:"column:call;" json:"call"`
	Hypoxia     bool `gorm:"column:hypoxia;" json:"hypoxia"`
	Temperature bool `gorm:"column:temperature;" json:"temperature"`
	Flood       bool `gorm:"column:flood;" json:"flood"`

	DeviceElectricity      uint8      `gorm:"column:device_electricity;" json:"device_electricity"`             // 设备供电 0正常1停电
	DeviceOxygen           uint8      `gorm:"column:device_oxygen;" json:"device_oxygen"`                       // 设备氧气 0正常 1缺氧
	DeviceOxygenInfo       uint16     `gorm:"column:device_oxygen_info;" json:"device_oxygen_info"`             // 设备氧气值 0-65535
	DeviceWater            uint16     `gorm:"column:device_water;" json:"device_water"`                         // 设备水量值 0-65535
	DeviceThreeElectricity uint8      `gorm:"column:device_three_electricity;" json:"device_three_electricity"` // 设备三相电状态 0正常 1混乱 2缺项
	DeviceTemperature      float32    `gorm:"column:device_temperature;" json:"device_temperature"`             // 设备环境温度值 如（ -30.1， 30.1）
	DeviceHumidity         uint8      `gorm:"column:device_humidity;" json:"device_humidity"`                   // 设备湿度百分比 80%
	DeviceStandby          uint8      `gorm:"column:device_standby;" json:"device_standby"`                     // 设备电量百分比 80%
	DeviceSignal           uint8      `gorm:"column:device_signal;" json:"device_signal"`                       //设备信号 0-31
	DeviceMessageSwitch    uint8      `gorm:"column:device_message_switch;" json:"device_message_switch"`       // 设备短信开关 0关 1开
	DevicePhoneSwitch      uint8      `gorm:"column:device_phone_switch;" json:"device_phone_switch"`           // 设备电话报警开关 0关 1开
	DevicePhone            string     `gorm:"column:device_phone;" json:"device_phone"`                         // 设备手机号11位 逗号分隔，最多三个（13049339816，13049339816）
	DeviceFlood            uint8      `gorm:"column:device_flood;" json:"device_flood"`                         // 设备水侵情况 0正常1水侵
	RecoverAt              time.Time  `gorm:"column:recover_at;" json:"recover_at"`                             // 重置时间
	HeartbeatsAt           time.Time  `gorm:"column:heartbeats_at;" json:"heartbeats_at"`                       // 最后心跳时间
	CreatedAt              time.Time  `gorm:"column:p_created_at;" json:"p_created_at"`
	UpdatedAt              time.Time  `gorm:"column:p_updated_at;" json:"p_updated_at"`
	DeletedAt              *time.Time `gorm:"column:p_deleted_at;" json:"p_deleted_at"`
}

func (*Device) TableName() string {
	return "device"
}
